package com.project.selenium;

import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.*;

import java.util.stream.Stream;

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JunitTest {


    @Order(2)
    @Test
    void test0() {
        System.out.println("=======第一个测试用例=======");
    }

    @Order(0)
    @Test
    void test1() {
        System.out.println("=======第二个测试用例=======");
    }

    // 传递单个参数
    @ParameterizedTest
    @ValueSource(ints = {1,2,3,4})
    void test2(int a) {
        System.out.println("接收到的参数是: a = " + a);
    }

    // 传递多个参数
    @ParameterizedTest
    @CsvSource({"'张三',18"})
    void test3(String name,int age) {
        System.out.println(name  + age +  "岁");
    }

    // 传递大量参数, 读取文件中的数据
    @ParameterizedTest
    @CsvFileSource(resources = "/test4.csv")
    void test4(String name,int age) {
        System.out.println("name:" + name + ", age:" + age);
    }

    // 用方法的返回值来作为参数
    @ParameterizedTest
    @MethodSource("result")
    void test5(String name,int age) {
        System.out.println(name + age + "岁");
    }

    public static Stream<Arguments> result() {
        int a = 14, b = 15;
        return Stream.of(
                Arguments.arguments("张三",a), // 第一组数据
                Arguments.arguments("李四",b)  // 第二组数据
        );
    }
}
